fix(ui): restore the pre-rebrand gittensory_ legacy localStorage keys#7898
fix(ui): restore the pre-rebrand gittensory_ legacy localStorage keys#7898shin-core wants to merge 1 commit into
Conversation
JSONbored#5743's blanket gittensory->loopover rename overwrote two localStorage legacy-key string literals that were supposed to keep the OLD prefix, so useLocalStorage's migration fallback read the same key it had just missed under -- silently dropping a pre-rebrand preference. Restore LEGACY_DISMISS_KEY in onboarding-preview-card and the notification opt-in legacy key in notification-readiness-card to their gittensory_-prefixed values (matching the still-correct try-it.tsx pattern), so a maintainer's pre-rebrand onboarding dismissal / notification opt-in migrates forward instead of appearing lost. Regenerate scripts/branding-drift-baseline.json so the two intentionally-restored gittensory_ literals are recorded, not flagged as drift. Adds a regression test per component that seeds the legacy key and asserts the value is read forward to the current key.
|
🚨 Contributor flagged. Click here for more info: Superagent Dashboard |
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7898 +/- ##
=======================================
Coverage 91.40% 91.40%
=======================================
Files 730 730
Lines 74789 74789
Branches 22822 22822
=======================================
Hits 68358 68358
Misses 5389 5389
Partials 1042 1042
Flags with carried forward coverage won't be shown. Click here to find out more. |
|
Warning ⏸️ LoopOver review result - manual review recommendedReview updated: 2026-07-21 16:51:10 UTC
Review summary Nits — 4 non-blocking
Flagged checks (non-blocking)
Decision drivers
Context & advisory signals — never blocks the verdict
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. Scroll preview
A short scroll-through clip (desktop) — click either thumbnail to open the full animation. Evidence for scroll-linked behavior a single screenshot can't show. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
|
This pull request changes UI/visual code but its screenshot evidence is incomplete. Every required viewport × theme combination needs its own before/after image pair in a labeled table row (e.g. "Desktop · Light | before | after"). Still missing: Desktop · Dark, Tablet · Dark, Mobile · Dark. Please resubmit with the remaining rows filled in. See https://github.com/JSONbored/loopover/blob/main/.claude/skills/contributing-to-loopover/SKILL.md for the exact format and examples. This is an automated maintenance action. |
Summary
EvidenceCurrent contributorTrust:
enabled: true
blockBelowScore: 30
trustedAuthors: [dhgoal, shin-core, andriypolanski]Recent
Meanwhile ImpactThe trust flag routes every AskCould the Superagent app's live config be re-synced / the Thanks! |


What & why
Closes #7782.
Commit
112bc4a83(#5405) gaveuseLocalStoragealegacyKeyparam so a pre-rebrandgittensory_*localStorage value migrates forward to the newloopover_*key.81e4ac34d(#5743, the fullgittensory→loopovercutover) then did a blanket text substitution that also rewrote two string literals meant to keep the old prefix:onboarding-preview-card.tsx—LEGACY_DISMISS_KEYbecame identical to the currentDISMISS_KEY.notification-readiness-card.tsx— the notification opt-in legacy key became identical to its current key.With
key === legacyKey,useLocalStorage's fallback reads the same key it just missed under, so a maintainer who dismissed the onboarding card or opted into notifications before the rebrand silently loses that preference. Every other rebrand-migrated key (try-it.tsx'sgittensory.session_token, etc.) survived intact.The fix
Restore both legacy keys to their pre-rebrand
gittensory_-prefixed literals, matching the still-correcttry-it.tsxpattern. String-literal-only change — nothing rendered changes.Because these two files now legitimately contain
gittensoryliterals,scripts/branding-drift-baseline.jsonis regenerated (vianpm run branding-drift:update) so the branding-drift check records them as intentional rather than flagging new drift — same generated-artifact discipline as ui:openapi / cf-typegen.Tests
A regression test per component, extending the existing test file:
gittensory_maintainer_onboarding_preview_dismissedand asserts the card stays hidden, the demo API call is skipped, and the value is written forward to the current key.gittensory_notification_opt_inand asserts the pill shows "opt-in enabled" and the value is migrated to the current key.Verified bug-catching: reverting either key to the corrupted
loopover_value fails its regression test.Validation
apps/loopover-ui:vitest run(both files, 11 tests) pass;tsc --noEmitexit 0; eslint clean; Prettier clean.npm run branding-drift:check— ok (41 files match the regenerated baseline).apps/loopover-uiis not under thesrc/**99% patch gate; the regression tests are the coverage deliverable. Branched off currentmain, mergeable-clean.